/**
 * @file ethercat_factory.c
 * @brief EtherCAT主站工厂实现
 * 
 * 该文件实现了EtherCAT主站工厂，用于创建不同类型的EtherCAT主站实例
 */

#include "ethercat_interface.h"
#include <stdio.h>
#include <stdlib.h>

/* 声明创建特定主站的函数 */
extern EtherCATInterface* create_igh_master(void);
extern void destroy_igh_master(EtherCATInterface *interface);

extern EtherCATInterface* create_soem_master(void);
extern void destroy_soem_master(EtherCATInterface *interface);

/* 实现工厂函数 */
EtherCATInterface* create_ethercat_master(EtherCATMasterType type) {
    switch (type) {
        case MASTER_TYPE_IGH:
            printf("Creating IgH EtherCAT master...\n");
            return create_igh_master();
            
        case MASTER_TYPE_SOEM:
            printf("Creating SOEM EtherCAT master...\n");
            return create_soem_master();
            
        default:
            fprintf(stderr, "Unknown EtherCAT master type!\n");
            return NULL;
    }
}

void destroy_ethercat_master(EtherCATInterface* interface) {
    if (!interface) {
        return;
    }
    
    /* 这里简化处理，假设两种主站的销毁函数是兼容的 */
    /* 实际应用中可能需要记录主站类型或使用其他方式区分 */
    destroy_igh_master(interface);  /* 或 destroy_soem_master(interface) */
}